Advanced SMB2J hacking

By Insectduel

This is the place where you find the hex offsets in Super Mario Bros. 2J for the FDS. Because I knew almost all the data in that game, I decided to share some of the data I’ve collected. This is more advanced than the Hex Offset List section.

The Hex Editor like Transhexlation is required to do this. DO NOT FORGET the Disksys.rom in the same folder as the emulator is because this is how to play FDS games.

Background Palette Offsets

Starting Offset 9949=0x26DD Underwater Palette 22

Starting Offset 9950=0x26DE Ground Palette 22

Starting Offset 9951=0x26DF Underground 0F

Starting Offset 9952=0x26E0 Castle 0F

Starting Offset 9953=0x26E1 Night 0F

Starting Offset 9954=0x26E2 Snow 22

Starting Offset 9955=0x26E3 Night and Snow 0F

Starting Offset 9956=0x26E4 Mario on Screen 0F

I recommend the NES Palette Editor for this. Click on all files and choose a SMB2J ROM for it.

Hex Changed Offsets

27 Yellow

25 Fuchsia

22 Light Blue

16 Red

00 Gray

FF Dark Blue

Shining Animation

10831=0x2A4F

Original Offset 27 27

Shining Animation

10834=0x2A52

Original Offset 07 17

Surface and Celing TSA TileEditor

Hex Starting Offset 13207=0x3397

6A – Sea Tile

Hex Starting Offset 13208=0x3398

6B – Dirt Tile

Hex Starting Offset 13209=0x3399

50 – Vertical Bricks

Hex Starting Offset 13210=0x339A

63 – Castle Tile

Brickery Offsets

Hex Starting Offset 13211=0x339B

00 00 – None

Hex Starting Offset 13213=0x339D

00 18 – Surface

Hex Starting Offset 13215=0x339F

01 18 – Surface and Ceiling

Hex Starting Offset 13217=0x33A1

07 18 – Surface and Ceiling 3

Hex Starting Offset 13219=0x33A3

0F 18 – Surface and Ceiling 4

Hex Starting Offset 13221=0x33A5

FF 18– Surface and Ceiling 8

Hex Starting Offset 13223=0x33A7

01 1F- Surface 4 and Ceiling

Hex Starting Offset 13225=0x33A9

07 1F - Surface 4 and Ceiling 3

Hex Starting Offset 13227=0x33AB

0F 1F - Surface 4 and Ceiling 4

Hex Starting Offset 13229=0x33AD

81 1F - Surface 5 and Ceiling

Hex Starting Offset 13231=0x33AF

01 00 - Ceiling

Hex Starting Offset 13233=0x33B1

8F 1F - Surface 5 and Ceiling 4

Hex Starting Offset 13235=0x33B3

F1 1F – Surface 8 and Ceiling

Hex Starting Offset 13237=0x33B5

F9 18 – Surface and Ceiling and Middle 5

Hex Starting Offset 13239=0x33B7

F1 18 – Surface and Ceiling and Middle 4

Hex Starting Offset 13241=0x33B9

FF 1F – All

Advanced Hex digits

00 10 Shorter Surface (Must place sprite on floor)

00 1C Surface 3

0F 00 Ceiling 3

FF 00 Ceiling 8

8F 18 Surface and Ceiling 4 and Middle 1

00 1F Surface 5

Height for ? coin block Vertical 3.

14686=0x395E

Original Offset 03

Height for ? coin block Vertical 7.

14689=0x3961

Original Offset 07

Height for Bridge V=7.

14703=0x396F

Original Offset 06

Height for Bridge V=8.

14706=0x3972

Original Offset 07

Height for Bridge V=10.

14709=0x3975

Original Offset 09

Make any tiles behave like their other tiles

NOTE: Not all of them are here

Clouds (Surface)

13382=0x3446

Original Offset 88

Island Block (Left)

14184=0x3768

Original Offset 16

Island Block (Center)

14191=0x376F

Original Offset 17

Island Tree Tile

14196=0x3774

Original Offset 4C

Island Block (Right)

14201=0x3779

Original Offset 18

Cloud Block (Left)

14220=0x378C

Original Offset 8A

Cloud Block (Right)

14225=0x3791

Original Offset 8C

Cloud Block (Center)

14239=0x379F

Original Offset 8B

? Coin (For Length)

14697=0x3969

Original Offset C0

Bridge Block Behaviour

14717=0x397D

Original Offset 0B

Bridge Block Behaviour (Bottom)

14725=0x3985

Original Offset 64

Vertical Balls Behaviour

14735=0x398F

Original Offset 6F

Flagpole Sphere

14740=0x3994

Original Offset 21

Flag String Behaviour

14749=0x399D

Original Offset 22

Block (For Flagpole)

14754=0x39A2

Original Offset 62

Sea Vertical Seaplant Block

14878=0x3A1E

Original Offset 1F

Ground Brick Block

14879=0x3A1F

Original Offset 4F

Underground Brick Block

14880=0x3A20

Original Offset 50

Castle Brick Block

14881=0x3A21

Original Offset 50

Cloud Horizontal block

14882=0x3A22

Original Offset 88

Horizontal/Vertical Block (All attributes)

14874=0x3A1A

Original Offsets 6A 62 62 63

Bullet Bill Cannon

14948=0x3A64

Original Offset 65

Bullet Bill Cannon (Middle)

14957=0x3A6D

Original Offset 66

Bullet Bill Cannon (Bottom)

14966=0x3A76

Original Offset 67

Blocks (For Steps)

15044=0x3AC4

Original Offset 62

Which Object 0-B tile behave like other tiles

Offsets from 19305=0x4B69 to 19317=0x4B75

Original Offsets 52 53 54 55 56 57 58 59 5A 5B 5C 5D

Misc. Data

Attribute Level Palette

9929=0x26C9

Original Offsets 01 02 03 04

Pixel Shining Object Count

10939=0x2ABB

Original Offset 06

Putting FF creates an anonyous shine.

Level Room Enabler

20428=0x4FCC

Original Offset CD 5F 07 D0 0E

Changed Offset EA EA EA EA EA

Ignores level Pointers when you set it like this.

Surfing Platform Speed

25648=0x6430

Original Offset 10

Hex Offsets

00 does not move

3F Fast

4F Super Fast (May screw up background screen)

7F really fast (May screw up background screen)

80 really fast (Backwards)

F0 Move backwards (Normal Speed)

Halfway pages

12715=0x31AB

Original Offsets 66 60 88 60 66 70 77 60 D6 00 77 80 70 B0 00 00 00 00

6660 World 1

8860 World 2

  1. World 3

7760 World 4

D600 World 5

7780 World 6

70B0 World 7

0000 World 8

0000 World 9

Halfway pages (For Worlds A-D)

48633=0xBDF9

Original Offsets 76 50 65 50 75 B0 00 00

7650 World A

6550 World B

75B0 World C

0000 World D

Much easier to understand. Each level is a byte

11223344

11 22

Byte 1

33 44

Byte 2

Edit Castle looping (Level)

19957=0x4DF5

Original Offsets 02 02 02 02 05 05 05 05 06 07 07 04

Changes the level of a loop command

Edit Castle looping (Page Frame)

19969=0x4E01

Original Offsets 03 05 08 09 03 06 07 0A 05 05 0B 05

Changes the Page level of a loop command

Edit Castle looping (Vertical Position)

19981=0x4E0D

Original Offsets B0 B0 40 30 B0 30 B0 B0 F0 F0 B0 F0

Changes the Vertical position of a loop command. Must stay in that position. World 8-4 is an example of the loop where the long fire-bar is.

Offset of page map skip data

34102=0x8536

Original Offsets 0C 0C 42 42 10 10 30 30 06 0C 54 06

Changes the offset for the looping.

NOTE: This is untested

Continuous loop 1

30593=0x7781

Original Offset 02

Changes the loop of a World

NOTE: This is untested

Continuous loop 2

30622=0x779E

Original Offset 05

Changes the loop of a World

NOTE: This is untested. However this may NOT be the right offset.

Editing loop commands is much harder than it looks. Only some specific information like AP’s SMB hacks explain more about editing loops.

World Pointers

34053=0x8505

Original Offset 00 05 09 0E 12 17 1C 20 24

This is kinda fun but it allows the number of levels to load for each world. Works for Warpzones as well.

00 World 1-1

05 World 2-1

09 World 3-1

0E World 4-1

12 World 5-1

17 World 6-1

1C World 7-1

20 World 8-1

24 World 9-1

Note: This will only work if the World is being loaded correctly in certain Worlds. Putting this hex 12 in World 1-1 WILL NOT WORK. This kind of procedure can only work in Super Mario all-stars.

For Worlds A-D

48514=0xBD82

Original Offsets: 00 05 0A 0E

Shooting Program 1

28702= 0x701E

Original Offset 1C

Changed Offset 0D

Shoots Upward

Shooting Program 2

28717= 0x702D

Original Offset FD

Changes the direction of the fireball clockwise. Inserting the Hex 00 will shoot straight fireballs. Low accuracy. Requires Shooting Program 1 Hex 0D for this. Enter this hex alone will not let the fireballs bounce.

Shooting Program 3

28726=0x7036

Original Offset 29 F8

Changed Offset 09 0F

Changes the direction of the fireball vertically, I think. Using in combination of 0D, FF, and 09 0F on all 3 shooting programs will allow Mario to shoot straight fireballs with perfect aiming.

Need a Table file click here?

Text Hex offsets

35042=0x88E2

Text name: @1986 NINTENDO

14 Characters

35059=0x88F3

Text name: MARIO GAME

10 Characters

35072=0x8900

Text name: LUIGI GAME

10 Characters

45693=0xB27D

Text name: MARIO (Ditto)

5 Characters

45698=0xB282

Text name: LUIGI (Ditto)

5 Characters

45765=0xB2C5

Text name: Thank you Mario! (or LUIGI)

16 Characters

45789=0xB2DD

Text name: Peace is Paved

14 Characters

45811=0xB2F3

Text name: With kingdom saved

18 Characters

45833=0xB309

Text name: Hurrah to Mario

16 Characters

45853=0xB31D

Text name: Our only hero

13 Characters

45870=0xB32E

Text name: This ends your trip

19 Characters

45893=0xB345

Text name: Of a long friendship

20 Characters

45917=0xB35D

Text name: 100000 PTS. ADDED

17 Characters

45931=0xB375

Text name: FOR EACH PLAYER LEFT.

21 Characters

45999=0xB3AF

Text name: WE PRESENT YOU FANTASY WORLD

24 Characters

46026=0xB3CA

Text name: LET’S TRY "9 WORLD"

19 Characters

46048=0xB3E0

Text name: WITH ONE GAME.

14 Characters

46074=0xB3FA

Text name: YOU’RE A SUPER PLAYER

22 Characters

46099=0xB413

Text name: WE HOPE WE

10 Characters

46115=0xB423

Text name: SEE YOU AGAIN.

14 Characters

46132=0xB434

Text name: MARIO AND STAFF

16 Characters

10283=0x282B

Text name: WORLD TIME (Status Bar)

11 Characters

10324=0x2854

Text name: WORLD (On the World 1-1 ect screen)

5 Characters

10345=0x2869

Text name: TIME UP

7 Characters

10356=2874

Text name: GAME OVER

9 Characters

10368=0x2880

Text name: CONTINUE

8 Characters

10383=0x288F

Text name: RETRY

5 Characters

10392=0x2898

Text name: WELCOME TO WARP ZONE

21 Characters

11758=0x2DEE

Text name: Thank you Mario! (or LUIGI if edited)

16 Characters

11778=0x2E02

Text name: BUT OUR PRINCESS IS IN

22 Characters

11803=0x2E1B

Text name: ANOTHER CASTLE

15 Characters

Enemy Pointer Data

This is the data where the pointers came from which is programmed to send enemies from one room to another room.

In this game, there are 2 bytes to edit the data.

Sprite listing Attribute Pointers

34114=0x8542 Room 00 Hex 2C

34115=0x8543 Room 20 Hex 0A

34116=0x8544 Room 40 Hex 27

34117=0x8545 Room 60 Hex 00

Sprite listing ROOM Pointers

34118=0x8546 Room 60 Hex 90 C7 (World 1-4)

34120=0x8548 Room 61 Hex AF C7

34122=0x854A Room 62 Hex D6 C7

34124=0x854C Room 63 Hex E9 C7

34126=0x854E Room 64 Hex D0 C5 (World 5-4)

34128=0x8550 Room 65 Hex 09 C6

34130=0x8552 Room 66 Hex 30 C6

34132=0x8554 Room 67 Hex 6F C6

34134=0x8556 Room 68 Hex 80 CA (World 9-3)

34136=0x8558 Room 69 Hex 8A CA

34138=0x855A Room 20 Hex 1E C8 (World 1-1)

34140=0x855C Room 21 Hex 44 C8

34142=0x855E Room 22 Hex 67 C8

34144=0x8560 Room 23 Hex 90 C8

34146=0x8562 Room 24 Hex C6 C8

34148=0x8564 Room 25 Hex DD C8

34150=0x8566 Room 26 Hex 07 C9

34152=0x8568 Room 27 Hex 2C C9

34154=0x856A Room 28 Hex 43 C9

34156=0x856C Room 29 Hex 60 C2 (Pipe Intro)

34158=0x856E Room 2A Hex 65 C9

34160=0x8570 Room 2B Hex AF C6 (World 5-1)

34162=0x8572 Room 2C Hex E0 C6

34164=0x8574 Room 2D Hex 08 C7

34166=0x8576 Room 2E Hex 2C C7

34168=0x8578 Room 2F Hex 49 C7

34170=0x857A Room 30 Hex 7A C7

34172=0x857C Room 31 Hex A6 C7

34174=0x857E Room 32 Hex BF C7

34176=0x8580 Room 33 Hex 88 C9 (Cloud Bonus Area Worlds 1 through 4)

34178=0x8582 Room 34 Hex 60 C2 (Overworld Warp Zone)

34180=0x8584 Room 35 Hex E7 C7

34182=0x8586 Room 36 Hex 0A C8

34184=0x8588 Room 37 Hex 31 C8

34186=0x858A Room 38 Hex 90 CA (World 9-1)

34188=0x858C Room 39 Hex 94 CA

34190=0x858E Room 3A Hex 94 CA

34192=0x8590 Room 3B Hex 60 C2 (Overworld Ending)

34194=0x8592 Room 3C Hex 32 C8 (Cloud Bonus Area Worlds 5 through 8)

34196=0x8594 Room 40 Hex 94 C9 (World 1-2)

34198=0x8596 Room 41 Hex BA C9

34200=0x8598 Room 42 Hex C4 C9

34202=0x859A Room 43 Hex 3B C8 (World 5-2)

34204=0x859C Room 44 Hex 5C C8

34206=0x859E Room 00 Hex DE C9 (World 3-2)

34208=0x85A0 Room 01 Hex 76 C8 (World 6-2)

34210=0x85A2 Room 02 Hex 04 CA (World 4-1 Bonus)

34212=0x85A4 Room 03 Hex A6 C8 (World 8-4, Water Part)

34214=0x85A6 Room 04 Hex B4 C8

34216=0x85A8 Room 05 Hex 94 CA (World 9-1, Water Part)

34218=0x85AA Room 06 Hex B5 CA

34220=0x85AC Room 07 Hex BA CA

Sprite listing Attribute Pointers For Worlds A-D

48541=0xBD9D Room 00 Hex 14

48542=0xBD9E Room 20 Hex 04

48543=0xBD9F Room 40 Hex 12

48544=0xBDA0 Room 60 Hex 00

Sprite listing ROOM Pointers

46545=0xBDA1 Room 60 Hex D0 C5 (World A-4)

46547=0xBDA3 Room 61 Hex F5 C5

46549=0xBDA5 Room 62 Hex 1C C6

46551=0xBDA7 Room 63 Hex 5D C6

46553=0xBDA9 Room 20 Hex 8C C6 (World A-1)

46555=0xBDAB Room 21 Hex C7 C6

46557=0xBDAD Room 22 Hex D6 C6

46559=0xBDAF Room 23 Hex 04 C7

46561=0xBDB1 Room 24 Hex 29 C7

46563=0xBDB3 Room 25 Hex 4C C7

46565=0xBDB5 Room 26 Hex 6B C7

46567=0xBDB7 Room 27 Hex 8A C7

46559=0xBDB9 Room 28 Hex AA C7

46561=0xBDBB Room 29 Hex CB C7

46563=0xBDBD Room 2A Hex E2 C7 (World D-4 Overworld Part)

46565=0xBDBF Room 2B Hex F2 C7 (Cloud Bonus Area)

46567=0xBDC1 Room 2C Hex 60 C2 (Pipe Intro)

46569=0xBDC3 Room 2D Hex 60 C2 (Overworld Ending)

46571=0xBDC5 Room 40 Hex 01 C8 (World A-2)

46573=0xBDC7 Room 41 Hex 1B C8

46575=0xBDC9 Room 00 Hex 2F C8 (World B-2)

Object level Pointer Data

This is the data where the pointers came from which is programmed to send objects from one room to another room.

Object listing Attribute Pointers

34222=0x85AE Room 00 Hex 2C

34223=0x85AF Room 20 Hex 0A

34224=0x85B0 Room 40 Hex 27

34225=0x85B1 Room 60 Hex 00

Object listing ROOM pointers

34226=0x85B2 Room 60 Hex 14 CA (World 1-4)

34228=0x85B4 Room 61 Hex 73 CA

34230=0x85B6 Room 62 Hex FE CA

34232=0x85B8 Room 63 Hex 95 CB

34234=0x85BA Room 64 Hex C9 C8 (World 5-4)

34236=0x85BC Room 65 Hex 96 C9

34238=0x85BE Room 66 Hex 25 CA

34240=0x85C0 Room 67 Hex B8 CA

34242=0x85C2 Room 68 Hex CB CA (World 9-3)

34244=0x85C4 Room 69 Hex 2E CB

34246=0x85C6 Room 20 Hex 0A CC (World 1-1)

34248=0x85C8 Room 21 Hex 65 CC

34250=0x85CA Room 22 Hex B4 CC

34252=0x85CC Room 23 Hex 2D CD

34254=0x85CE Room 24 Hex AA CD

34256=0x85D0 Room 25 Hex 09 CE

34258=0x85D2 Room 26 Hex 88 CE

34260=0x85D4 Room 27 Hex E7 CE

34262=0x85D6 Room 28 Hex 5E CF

34264=0x85D8 Room 29 Hex 74 C2 (Pipe Intro)

34266=0x85DA Room 2A Hex BF CF

34268=0x85DC Room 2B Hex 8F CB (World 5-1)

34270=0x85DE Room 2C Hex 30 CC

34272=0x85E0 Room 2D Hex 8F CC

34274=0x85E2 Room 2E Hex 0E CD

34276=0x85E4 Room 2F Hex 7B CD

34278=0x85E6 Room 30 Hex FE CD

34280=0x85E8 Room 31 Hex 5B CE

34282=0x85EA Room 32 Hex D6 CE

34284=0x85EC Room 33 Hex 08 D0 (Cloud Bonus Area Worlds 1 through 4)

34286=0x85EE Room 34 Hex 7D C2 (Overworld Warp Zone)

34288=0x85F0 Room 35 Hex 4B CF

34290=0x85F2 Room 36 Hex B6 CF

34292=0x85F4 Room 37 Hex 1A D0

34294=0x85F6 Room 38 Hex 3F CB (World 9-1)

34296=0x85F8 Room 39 Hex 4E CB

34298=0x85FA Room 3A Hex 4F CB

34300=0x85FC Room 3B Hex 61 C2 (Overworld Ending)

34302=0x85FE Room 3C Hex 1B D0 (Cloud Bonus Area Worlds 5 through 8)

34304=0x8600 Room 40 Hex 21 D0 (World 1-2)

34306=0x8602 Room 41 Hex E2 D0

34308=0x8604 Room 42 Hex 1D D1

34310=0x8606 Room 43 Hex 52 D0 (World 5-2)

34312=0x8608 Room 44 Hex 1F D1

34314=0x860A Room 00 Hex 68 D1 (World 3-2)

34316=0x860C Room 01 Hex 60 D1 (World 6-2)

34318=0x860E Room 02 Hex 1B D2 (World 4-1 Bonus)

34320=0x8610 Room 03 Hex 29 D2 (World 8-4, Water Part)

34322=0x8612 Room 04 Hex 42 D2

34324=0x8614 Room 05 Hex 50 CB (World 9-1, Water Part)

34326=0x8616 Room 06 Hex 97 CB

34328=0x8618 Room 07 Hex DA CB

Frequently Asked Questions (FAQ)

Q. Where's the rest of the levels like World A?

A. The extra levels are not accessible from within the standard 0x80 level pointers. However, the actual address locations in the ROM of these extra levels are known. Check the list given in the Level Offset List. Modifying these levels will require saving them to an unused level number in the standard 0x80 levels, and then manually repairing the necessary pointer with a hex editor.

In these cases, you need to collect 8 stars in order to play World A to see if those unused levels are been modified. But in Super Mario all-stars, those extra overworld levels can’t be modified either by standard.

Q. Why do certain levels only load in certain Worlds while others don’t?

A. Because the data is completely different than the original SMB1. Objects like Upside down pipes or having a Red Piranha Plant in World 1 requires World 5, 9 or A function to edit them. This includes the pointers themselves. Obiviously it’s impossible to find that kind of data where you find World 1 and switch them to World 5. Otherwise the level offsets can never be the same.

Super Mario Bros. The Lost Levels can now have the power to place Upside down pipes in World 1 and such except for Overworld Level Pointers. While editing the Non-Overworld Pointers, you have to switch the hex pointers in your level properly.

Q. OK, where’s the Minus World

A. The procedure has been removed since SMB1. Now the warp pipes acts like normal pipes in SMB2J.

Q. How do I change the level attributes

A. You can’t. Not by a Non-Level editor if you try to edit your level. This kind of data is too complex to do it. You have to change part of the level, music, the effects, pointers, etc. to get the attributes of the level. In other words, you have to trade object level pointers in your rooms.

Q. How do I delete Objects/Sprites?

A. If you’re not using a level or sprite pointer put FF at the end of the sprite’s hex number and FD for object’s hex number.

Q. Can you find more data for me?

A. I could and if I’m only gonna feel like it. However I’m still waiting for Kernel Software to translate the SMB Remodeler to English so I could find the enemy attributes and others. What’s bothering me is that I still can’t find the data with the Green Springboards and the Red Piranha Plants and such other existing data for SMB2J.

Q. Where can I get the SMB2J ROM?

A. Check your ego at the door. Insectduel’s Domain does not come with ROMs, and never will.

Copyright 2006 Insectduel. Reproduction of this document is forbidden. Contact me if I’m wrong. Some offsets came from the original Hex Offset list Crazy Hex Strings.